The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description which may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Electronic data processing often involves receiving, storing, and processing streaming data. Examples of devices that may receive, store, and process streaming data include receivers, signal processors, electronic testers, storage devices such as disk drives, etc. Streaming data is generally received in large quantities and at high data rates. Thus, to store streaming data, the devices receiving the data may need large amounts of high-capacity, high-speed memory in addition to the memory that the devices use for normal operations.
As an example, a hard disk drive (HDD) is described in detail. Referring now to FIG. 1, HDD 10 includes a hard disk assembly (HDA) 12 and a HDD printed circuit board (PCB) 14. The HDA 12 may include one or more circular magnetic surfaces called platters 16. The platters 16 are arranged in a stack, and the stack is rotated by a spindle motor 18. One or more read/write devices called heads 20 may read and write data on the platters 16.
Each head 20 may include a write element such as an inductor that generates a magnetic field and a read element such as a magneto-resistive (MR) element that senses the magnetic field on the platter 16. The head 20 is mounted at a distal end of an actuator arm 22. An actuator such as a voice coil motor (VCM) 24 or a stepper motor (not shown) moves the actuator arm 22 relative to the platters 16 during read/write operations.
The HDA 12 includes a preamplifier module 26 that amplifies signals generated by and input to the heads 20. When reading data, the preamplifier module 26 amplifies low-level analog signals received from the read element and outputs amplified analog signals to a read-channel module 28. When writing data, the preamplifier module 26 generates write current that flows through the write element of the head 20. The write current is switched to produce a magnetic field having a positive or a negative polarity. The positive or negative polarity is stored on the platters 16 and is used to represent binary data.
The HDD PCB 14 includes the read-channel module 28, a hard disk controller (HDC) module 30, a processor 32, a spindle/VCM driver module 34, a buffer 36, and an input/output (I/O) interface 38. During write operations, the read-channel module 28 may encode the data to be written using error correction coding (ECC), run length limited coding (RLL), etc., and transmit the encoded data to the preamplifier module 26.
During read operations, the read-channel module 28 receives analog signals from the preamplifier module 26. The read-channel module 28 converts the analog signals into a digital format and outputs digital signals. The read-channel module 28 may filter the digital signals. The read-channel module 28 decodes the digital signals to generate the data read from the platters 16. Additionally, the read-channel module 28 detects and corrects errors in the data read from the platters 16.
The HDC module 30 controls various operations of the HDD 10. For example, the HDC module 30 generates commands that control the speed of the spindle motor 18 and the movement of the actuator arm 22. The spindle/VCM driver module 34 implements the commands and generates control signals that control the speed of the spindle motor 18 and the positioning of the actuator arm 22 during read/write operations.
The HDC module 30 may communicate with an external device (not shown) such as a host adapter via the I/O interface 38. The HDC module 30 may receive data to be written on the platters 16 and commands to read data from the platters 16 from the external device. Accordingly, the HDC module 30 may transmit data to be written on the platters 16 to the read-channel module 28 and data read by the heads 20 to the external device. The HDC module 30 may use the buffer 36 to store data and commands. The buffer 36 may employ volatile memory having low latency such as SDRAM. Additionally, nonvolatile memory such as flash memory may be utilized to store control code executed by the processor 32.
The processor 32 processes data, including encoding, decoding, formatting, etc. Additionally, the processor 32 processes servo or positioning information to position the heads 20 at correct locations on the platters 16 during read/write operations. Servo, which is stored on the platters 16, ensures that data is written to and read from correct locations on the platters 16. In some implementations, a self-servo write (SSW) module 40 may write servo on the platters 16 using the heads 20 before the HDD 10 can be used to store data.
Portions of the HDD 10 may be implemented by one or more modules. For example, the HDC module 30 and the processor 32 may be implemented by a single module. Additionally, the read-channel module 28 and/or the spindle/VCM driver module 34 may be implemented by the single module and/or by additional modules, etc. Alternatively, most of the HDD 10 except the HDA 12 may be implemented by a single integrated circuit (IC) called a system-on-chip (SOC). For example, the SOC may implement all the components of the HDD PCB 14.
Occasionally, data stored on the HDD 10 may get corrupted and may be unreadable due to various reasons. For example, noise, physical defects on the surface of platters 16, defects in one or more modules, etc. may corrupt the data. Original data may be recovered using the hardware built into the read-channel module 28. However, the error-correcting capability of the hardware may be limited. Consequently, the read-channel module 28 may be unable to correct all the errors in the data.